package com.cskaoyan.javase._2polymorphic._1basic;

import javafx.animation.Animation;

/**
 * 当父子类出现同名成员（变量或方法）时，
 * 使用多态的形式访问（多态的形式指：用父类引用指向子类对象，然后用引用名访问成员）时的访问特征。
 *
 * 成员变量的访问是没有多态现象的，父子类存在同名成员变量，表现出属性的隐藏。
 * 用一句话来总结，对象名点成员变量的访问特征：
 * 编译时（访问范围）看左边，运行时（访问结果）还看左边。
 *
 * 成员变量描述的是对象的属性或者外貌特征，把子类对象赋值给父类的引用，
 *      就相当于给子类对象披上了一个父类类型马甲。
 *      这样在外界看来，这时候的子类就变成了父类。
 *
 * 总之，还是这句话：编译时看左边，运行时看左边。
 *
 * @since 16:02
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Animal a;
        a = new Cat();
        System.out.println(a.age);
        a = new Dog();
        System.out.println(a.age);
        a = new Elephant();
        System.out.println(a.age);
    }
}

class Animal {
    int age = 10;
}

class Cat extends Animal {
    int age = 100;
}

class Dog extends Animal {
    int age = 200;
}

class Elephant extends Animal {
    int age = 300;

}